package cn.highset.modules.base.service;

import cn.highset.base.HighsetBaseService;
import cn.highset.modules.base.entity.DictData;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;

/**
 * 字典数据接口
 *
 * @author Victor
 */
@CacheConfig(cacheNames = "dictData")
public interface DictDataService extends HighsetBaseService<DictData, String> {

    /**
     * 多条件获取
     *
     * @param dictData
     * @param pageable
     * @return
     */
    Page<DictData> findByCondition(DictData dictData, Pageable pageable);

    /**
     * 通过dictId获取启用字典 已排序
     *
     * @param dictId
     * @return
     */
    List<DictData> findByDictId(String dictId);

    /**
     * 通过dictId删除
     *
     * @param dictId
     */
    void deleteByDictId(String dictId);

    /**
     * 通过dictId 与 value值获取字典数据
     *
     * @param dictId
     * @param value
     * @return
     */
    DictData findByDictIdAndValue(String dictId, String value);

    /**
     * 通过dictId 与 title值获取字典数据
     *
     * @param dictId
     * @param title
     * @return
     */
    DictData findByDictIdAndTitle(String dictId, String title);

    /**
     * 通过字典类型  与 Value  获取字典数据
     *
     * @param dictType
     * @param value
     * @return
     */
    @Cacheable(key = "'gettitle:'+#dictType+':'+#value")
    String findByDictTypeAndValue(String dictType, String value);

    /**
     * 通过字典类型  与 Title  获取字典数据
     *
     * @param dictType
     * @param title
     * @return
     */
    @Cacheable(key = "'getvalue:'+#dictType+':'+#title")
    String findByDictTypeAndTitle(String dictType, String title);
}
